The world-wide-web (WWW) interface protocol over Internet provides a convenient mechanism for distributing information from web servers to web users on the client computers which are connected to the web servers through Internet or private networks.
When a web server receives a request from a client computer for a dynamic web page, it runs the Common Gateway Interface (CGI) (e.g., Java Server Pages “JSP” or Servlet) associated with the URL and passes the browser information and other parameters to the CGI. This executable CGI may access and retrieve data stored on the web server or other connected computers to generate a web page (which includes application code to render the web page). When the data in the real world is changed or updated, the image view of the web page necessarily changes in some aspects.
Computer applications often use graphics to present information and use Graphic User Interface (GUI) as the interface between computers and their users. While text interface is still in use, it is not favored. GUI is characterized by use of menu selection lists, popup-windows, and visual-presentation components such as interactive charts, dials, trees, graphs and maps. Because of the intensive use of graphics, it may require considerable effort to develop and modify the contents of the web pages.
Commercially available web browsers support many presentation technologies such as Dynamic Hypertext Markup Language (DHTML), Extensible Hypertext Markup Language (XHTML) Document Object Model (DOM), JavaScript, Cascading Style Sheets (CSS), eXtensible Stylesheet Language (XSL), three-dimensional modeling language (e.g., X3D), Silverlight/XAML (eXtensible Application Markup Language), MXML/Flash and Scalable Vector Graphics (SVG), Synchronized Multimedia Integration Language (SMIL), and XForms. The use of such a combination of programming languages makes programming more complex. To present a component on a web page, the JSP/Servlet must create the code to present the component and include the code in the file of the web page. Programming for Internet applications requires experience in both Java (or equivalent languages) for the server and DHTML/JavaScript and SVG/XAML (or equivalent languages) for the client computer. It might be necessary to create and debug several hundreds to thousands of lines of code to present a web page.
In addition, different browsers require slightly different DHTML/JavaScript code instructions to present a component, and therefore, different application code must be developed for different browsers and devices to present the same component. Each browser supports a few unique HTML tags or inbuilt JavaScript functions, which are not understood by browsers from other vendors or browser of older versions. To develop a more complicated web application, application developers often need to write code in appropriate languages and presentation technologies such as DHTML, DOM, JavaScript, CSS, XML, XSL, SVG and XAML for each specific browser (or plug-in viewer).
A web page or web application may include graphical user interface (‘GUI’) subcomponents such as interactive charts, graphs, maps, dials, menus, check boxes and dropdown lists. The web page requires many lines of markup code (e.g. SVG, MXML/FXG or XAML) and programming code (e.g. JavaScript, ActionScript or C#) for presenting each of the GUI subcomponents. This type of web pages are referred to as Rich Internet Applications (RIA) because code for web pages is in many ways similar to the desktop GUI applications developed in programming languages such as Visual Basic.
To present a GUI component in a web page, the web page must include the necessary application code for the GUI component. The application code corresponding to each GUI component includes markup code such as SVG elements and JavaScript code. SVG elements such as circle, ellipse, rect, line, text, polyline, polygon and path can be used in web page to draw two-dimensional or three-dimensional visual shapes such as charts, check boxes or maps. JavaScript code is implemented to manipulate and redraw SVG elements, and, thus, update GUI components reflecting a change in data for the GUI components or the state of the GUI components. In some implementations, JavaScript code is used to draw visual elements in lieu of SVG markup language instructions. So it is possible to present a visual component without using markup language.
Furthermore, it is necessary for subcomponents to communicate with the container component and with each other. Therefore, the container component must have additional communication code, which allows the subcomponents to exchange data with the container component and with each other.
Finally, information critical to business decisions constantly changes in real-time, and, therefore, updating web pages by rewriting presentation code of the web page by conventional methods is neither realistic nor economical. Also it may be desirable to customize a few components according to the preferences or profile of each of requesting users. Various attempts are made to speed up the process of application development and maintenance in this and other similar environments for same or similar reasons.
A method of reuse of image data is described in U.S. Pat. No. 6,539,420 B1, filed Mar. 25, 2003, titled “Distribution Mechanism for Reuse of Web Based Image Data”, granted to Fields et al. This method describes a technology of reuse of image data in a distributed computer network at a web server in response to a request from a client browser for a web page. A template defining a composite image is retrieved and at least one image object identified by the template is retrieved from another location to the web server followed by a given image transform and the transformed image object being mapped into the composite image according to the template. The method is limited to web-based image data.
A method for creating graphical programs is described in U.S. Pat. No. 6,053,951, filed on Apr. 25, 2000, titled “Man/Machine Interface Graphical Code Generation Wizard for Automatically Creating MMI Graphical Programs”, granted to McDonald et al. This application describes a computer-implemented system and method for automatically generating graphical code in a graphical programming system. The graphical code generation wizard selects a graphical code template stored in the computer memory in response to the control arranged by the user and configures the graphical code template with the parameter values selected by the user, and then creates an association, which is able to be unlocked by the user, between the control and the configured graphical code.
A method for automatic web page creation of an organizational directory for use in an Internet and Intranet environment is disclosed in U.S. Pat. No. 5,940,834, filed on Aug. 17, 1999, titled “Automatic Web Page Generator”, and granted to Debbie Pinard and Richard Deadman. The web page directory is created from data stored in the directory application component of the web page generator and, after being placed on a web server, allows any individual who has network access to the web server offering the web page to view the directory information in a web page format. This method is not intended to create any web component.
A method for building templates is disclosed in U.S. Pat. No. 6,093,215, filed on Jul. 25, 2000, titled “Method and Apparatus for Building Templates in a Component System”, and granted to Jeffrey J. Buxton and Eric S. Portner. A component customization and distribution system in an object oriented environment provides a template builder utility which enables selection of a base component, modification to the state of persistent data of the base component, storing of the modification to the persistent data of the base component into a template format, and user-password locking of the template. The template builder utility further enables the generation of user-defined instructions as part of the template and generation of a template distribution pack, for which the generation methods are also disclosed.
There is still a need for a system and method for developing components efficiently and a method for using pre-built components to build larger components or applications. Also, there is a need for a system and method for modularizing a larger portion of code created for each of the software applications into modules or components having higher degree of autonomy, where such modules or components also often require less effort to adapt to evolving user/business needs and require less effort for code reuse (if similar component or module is required in another application).